package com.zlm.common.base;

import com.zlm.common.constants.CodeConstants;
import com.zlm.common.dto.JsonResultDto;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * 控制器基类
 */
public class BaseController {

    /**
     * 日志对象
     */
    protected Logger logger = LogManager.getLogger(getClass());

    /**
     * 请求成功
     * @return
     */
    protected JsonResultDto success() {
        return success(null);
    }

    /**
     * 请求成功
     * @param data
     * @return
     */
    protected JsonResultDto success(Object data) {
        return jsonResult(CodeConstants.CODE_SUCCESS, data);
    }

    /**
     * 请求错误
     * @return
     */
    protected JsonResultDto fail() {
        return fail(CodeConstants.CODE_FAIL);
    }

    /**
     * 请求错误
     * @param code
     * @return
     */
    protected JsonResultDto fail(String code) {
        return fail(code, null);
    }

    /**
     * 请求错误
     * @param code
     * @param data
     * @return
     */
    protected JsonResultDto fail(String code, Object data) {
        return jsonResult(code, data);
    }

    /**
     * 返回json格式
     * @param code
     * @param data
     * @return
     */
    private JsonResultDto jsonResult(String code, Object data) {
        if (code == null) {
            code = CodeConstants.CODE_BUSY;
        }
        JsonResultDto json = new JsonResultDto();
        json.setCode(code)
                .setData(data)
                .setMsg(CodeConstants.getMsg(code));

        return json;
    }
}
